package dawn.jxufe.community.dao;

import dawn.jxufe.community.entity.Message;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

/**
 * @author dawn21
 * @version 1.0
 * @date 2022/8/1 10:32
 * @component
 */
@Mapper
public interface MessageMapper {
    // 查询一页会话的方法，针对每个会话只显示(返回)一个最新的私信，相当于以一条私信代替一个会话占用一个区域。分页。
    List<Message> selectConversations(int userId, int offset, int limit);

    // 查询总会话数量的方法。
    int selectConversationCount(int userId);

    // 点击一个会话后，查询一个会话的详情(私信列表)的方法。要分页。
    List<Message> selectLetters(String conversationId, int offset, int limit);

    // 查询一个会话所有私信数量的方法。
    int selectLetterCount(String conversationId);

    // 查询一个会话的未读私信数量。查询一个用户所有未读私信数量。
    int selectLetterUnreadCount(int userId, String conversationId);

    // 新增消息
    int insertMessage(Message message);

    // 修改多个消息的状态。
    int updateStatus(List<Integer> ids, int status);

    // 显示通知列表
    // 查询某个主题最新的通知
    Message selectLastestNotice(int userId, String topic);
    // 查询某个主题通知的数量
    int selectNoticeCount(int userId, String topic);
    // 查询未读的通知的数量
    int selectNoticeUnreadCount(int userId, String topic); // topic不传时，查询所有主题未读消息。
    // 查询某个主题所有的通知。
    List<Message> selectNotices(int userId, String topic, int offset, int limit);

}
